home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Utilities Experience
/
The Utilities Experience - Volume 1.iso
/
software
/
demos
/
r-z
/
sbase4pro
/
mail.d
/
mailit.sbp
< prev
next >
Wrap
Text File
|
1995-07-10
|
24KB
|
1,045 lines
SBP
ÿ½ ** Geschrieben von Mark C. Johnson, übersetzt von C. Gülicher und C. Gallagher
ÿ½ ** Konfigurationsroutine: Liest Variablen der letzten Sitzung ein, aktiviert die Fehlererkennung, und
ÿ½ weist einigen im Formular benutzten Variablen bestimmte Werte zu.
ÿ³ÿ_ÿwErrtrap
ÿ×prs%(5,5),a$(3),e$(3),c$(3),c%(3)
ÿâÿe
ÿÊÿË"Setting up..."
ÿÊ"MDEFAULT"
pth$ÿÿ
activity$ÿ""
ÿ¬1,1,1,"&Add to Mailing List"
ÿ¬1,2,1,"&Merge Lists "
ÿ¬1,3,1,"&Edit Mailing List "
ÿ¬1,4,1,"Print &Labels "
ÿ¬1,5,1,"&Utilities "
ÿ¬1,6,1,"&Purge Duplicates "
ÿ¬1,7,1,"Set &Options "
ÿ¬1,8,1,"&Help "
ÿ¬1,9,1,"&Quit "
MainMenu:
ÿ½ ** Main Menu - Diese Routine benutzen wir um unser systemweites Befehlsmenu zu initialisieren.
ÿ½ Tastendrücke, Mausklicks und Menuauswahlen werden hier überprüft.
ÿ½ Das Bildschirmformular und weitere Kleinigkeiten werden hier ebenfalls eingerichtet.
ÿÊÿåÿ¥ÿe
ÿÊÿË"Click, Type, or Select Menu Command."
activity$ÿ""
ÿpth$
ÿ´ÿ"Mailit"ÿí2
ÿ¥1,"!GOTO Helpme"
ÿÊÿ"Superbase Mailing List System"
ÿ¬1,0,1,"&Commands"
ÿ¬ÿ³clm%,sel%
ccr%ÿ0:cc%ÿ0:ent%ÿ0:a$ÿ"":ret%ÿ0:helpsel%ÿ0:zr%ÿ0
sel%ÿ0:a$ÿ"":srtn%ÿ0
ÿÏÿ¬ÿÿ¥ÿÿß
MM1:
ÿ½ ** Diese Routine übernimmt die Auswahl und ermittelt, worauf der Benutzer
ÿ½ zugreifen möchte.
ÿ¬1,0,0," "
ÿ³sel%ÿwAddEnts,MergeEnts,EditEnts,PrintLabs,Utilities,PurgeEnts,SetOpts,Helpme,Quitit
ÿ½ ** Wenn wir hier angekommen sind, muß der Benutzer eine Taste gedrückt oder außerhalb einer
ÿ½ ** Drucktaste geklickt haben.
ÿa$
ÿvFlushBuffer
a$ÿÿ>(a$)
sel%ÿÿ?("AMELUPOHQ",ÿ>(a$))
ÿ¡a$ÿÿ(27)ÿpsel%ÿ9
ÿ¡a$ÿ"?"ÿpsel%ÿ8
ÿ¡sel%ÿwMM1
ÿ
ÿwMainMenu
AddEnts:
ÿ½ ** 'Set up Area' hinzufügen
ret%ÿ9:helpsel%ÿ1
ÿÊÿ"Add to Mailing List"
activity$ÿ"Data Entry Form"
ÿ´ÿ"AddForm"
ÿÊÿË"ESC=Stop | SHIFT+TAB=Previous Field"
AE1:
ÿ½ ** Das Herz der Routine Add. Schaut nach, ob Formular leer bei Ende der Eingabe.
ÿÿ
Land ÿ"USA"
ÿÎ
ÿßÿ³
ÿ1,0
ÿ¡Vorname ÿ""ÿNachname ÿ""ÿFirma ÿ""ÿpactivity$ÿ"":ÿwMainMenu
ÿÌÿ
ÿwAE1
MergeEnts:
ÿ½ ** Oberfläche 'Zusammenführen' - prg% entscheidet,
ÿ½ ** ob wir zusammenführen (0), oder löschen (9)
ÿ6
ÿÊÿË"Merge Databases..."
ret%ÿ9:helpsel%ÿ2
ÿ¥1,"!GOTO H1"
merl%ÿ4:automan%ÿ1
ÿÊÿ"Merge Entries"
bHelp1$ÿ"Help"
bModify$ÿ"Set Thresholds"
bCancel$ÿ"Cancel Merge"
bOK$ÿ"Begin Merge"
prg%ÿ0
ÿwMEBegin
PurgeEnts:
ÿ½ ** Lösch-Oberfläche
ÿ6
ÿÊÿË"Purge Databases..."
ret%ÿ9:helpsel%ÿ6
ÿ¥1,"!GOTO H1"
merl%ÿ1:automan%ÿ1
ÿÊÿ"Purge Entries"
bModify$ÿ"Set Thresholds"
bHelp$ÿ"Help"
bCancel$ÿ"Cancel Purge"
bOK$ÿ"Begin Purge"
prg%ÿ9
MEBegin:
ÿÊÿË"ESC=Stop | B=Begin | T=Set Thresholds"
cnt%ÿ0
ÿwME21
ME1:
ÿ½ ** Auf Eingabe warten - war es ein Mausklick ?
ÿÎ
cnt%ÿ0:a$ÿ""
ÿÏÿ¥ÿÿß
ÿa$
ÿvFlushBuffer
ÿ¡a$ÿ""ÿwME2
ÿ¡cnt%ÿ
0ÿwH1
ÿ¡cnt%ÿ50ÿwMainMenu
ÿ¡cnt%ÿ999ÿwMChangePreset
ÿ¡cnt%ÿ0ÿwME21
ÿwME3
ME2:
ÿ½ ** Welche Taste wurde gedrückt - Ideal für SELECT CASE
z%ÿÿ0(a$)
ÿ¡z%ÿ0ÿpz%ÿmerl%
a$ÿÿ>(a$)
ÿÉÿæa$
ÿæ"H","?"
ÿwH1
ÿæ"C",ÿ(27)
ÿwMainMenu
ÿæ"V"
automan%ÿ2:ÿwME21
ÿæ"M"
automan%ÿ1:ÿwME21
ÿæ"O"
automan%ÿ3:ÿwME21
ÿæ"T"
ÿwMChangePreset
ÿæ"B"
ÿwME3
ÿæÿ^
ÿ¡z%ÿ5ÿwME1
merl%ÿz%
ÿÿÉ
ME21:
ÿ½ ** Voreingestellte Werte aus vordefiniertem Array übernehmen
prs1%ÿprs%(merl%,1)
prs2%ÿprs%(merl%,2)
prs3%ÿprs%(merl%,3)
prs4%ÿprs%(merl%,4)
prs5%ÿprs%(merl%,5)
ÿwME1
MChangePreset:
ÿ½ ** Voreinstellung ändern und speichern
ÿ1,5
prs%(merl%,1)ÿprs1%
prs%(merl%,2)ÿprs2%
prs%(merl%,3)ÿprs3%
prs%(merl%,4)ÿprs4%
prs%(merl%,5)ÿprs5%
ÿ´"mdefault"ÿÿ¶
ÿ{ÿ«
ÿÿ¶
ÿwME21
ME3:
ÿ½ ** Diese Routine bereitet den Boden für die Duplikate-Suchen-Routine.
ÿ½ ** Sie öffnet benötigte Formulare, wenn man neue Daten aufnehmen will
ÿ½ ** (durch Zusammenführen), prüft sie, ob die Datei das richtige Format
ÿ½ ** hat und importiert sie anschließend.
ÿ¡prg%ÿ0ÿpst$ÿ"Importing":st1$ÿ"Import"ÿ^st$ÿ"Purging Section of":st1$ÿ"Purge"
R%ÿÿA("MailBase")
ÿ¡prg%ÿ0ÿp
ÿÊÿË"Importing file..."
ÿÂ"File to import:","",11,n%,fln$
ÿ¡n%ÿ0ÿwMergeEnts
ÿ¡ÿJ(fln$ÿ".sbf")ÿ0ÿpÿÂ"Cannot find file ",fln$ÿ".sbf",21,n%:ÿwMergeEnts
bModify$ÿ"Importing...":bHelp$ÿ"Importing...":bCancel$ÿ"Importing...":bOK$ÿ"Importing..."
ÿÎ
ÿxFieldNameData
z1%ÿ0
ÿ´fln$ÿ".sbd"ÿÿ¤
I1:
ÿ¼b$
ÿ¤ÿca$
ÿ¡ÿ-(a$,1)ÿ">"ÿpz1%ÿ9
a$ÿÿF(ÿ+(a$,15))
ÿ¡ÿ>(a$)ÿÿ>(b$)ÿwNoWay
ÿ¡b$ÿ"Versch2"ÿwOKDokey
ÿ¡z1%ÿpz1%ÿ0:ÿ¤ÿca$
ÿwI1
NoWay:
ÿÿ¤
ÿÂ"This file does not match the MailBase","parameters. Re-configure and try again.",114,n%
ÿwMainMenu
OKDokey:
ÿÿ¤
ÿ¢fln$ÿ".sbf"ÿqÿ"MailBase"
ÿÿ¡
ÿ½ ** Sobald die importierte Datei mit MAILBASE zusammengeführt ist, kann der Anwender die einzelnen
ÿ½ ** Datensätze standardisieren. D.h., er kann sie gemäß den Umwandlungsregeln, die in der Datei
ÿ½ ** RULEBASE definiert sind, umwandeln - z.B. alle 'Str.' in 'Straße' ändern. Damit erhöht sich die
ÿ½ ** Wahrscheinlichkeit, Duplikate zu erkennen.
ÿ½ ** Wenn der Benutzer keine Standardisierung vornehmen möchte, schaltet das Programm zu der unten
ÿ½ ** aufgelisteten Routine BegStand, bevor es mit der Suche nach doppelten Datensätzen beginnt.
ÿ¡prg%ÿ0ÿp
srtn%ÿ9
ÿÂ"Do You Wish to Standardize the Database First?","",130,n%
ÿ¡n%ÿ0ÿpsrtn%ÿ0:ÿwBeg
ÿvBegStand
srtn%ÿ0
ÿÿ¡
Beg:
ÿ½ ** Nach der Standardisierung wird die Routine Beg ausgeführt. Diese ruft FindDupes auf, gibt
ÿ½ ** die Ergebnisse auf dem Bildschirm aus und kehrt zum Hauptmenü zurück.
md%ÿÿA("MailBase")
ÿvFindDupes
ÿ¡(prs1%ÿprs2%ÿprs3%ÿprs4%ÿprs5%ÿ0)ÿprg%ÿpÿÉÿ¾ÿ"MailBase"
fl%ÿÿA("MailBase")
activity$ÿst1$ÿ" complete"ÿÿ(13)
activity$ÿactivity$ÿ"Initial Record Count was "ÿÿH(ÿ(R%,5,0))ÿ","ÿÿ(13)
ÿ¡prg%ÿ0ÿp
activity$ÿactivity$ÿÿH(ÿ(md%ÿR%,5,0))ÿ" Records Imported"ÿÿ(13)
ÿÿ¡
activity$ÿactivity$ÿÿH(ÿ(md%ÿfl%,5,0))ÿ" Records Purged"ÿÿ(13)
activity$ÿactivity$ÿÿH(ÿ(fl%,5,0))ÿ" Records Remaining"ÿÿ(13)
ÿ1
ÿÊÿË"Press any key to continue..."
ÿÏÿ¥a$
ÿwMainMenu
FindDupes:
ÿ½ ** Dies ist das Herz der Zusammenfügen/Löschen Routinen, da hier tatsächlich die
ÿ½ Duplikate ermittelt werden und gemäß Anwenderwunsch behandelt werden.
ÿ¡prg%ÿ0ÿ(prs1%ÿprs2%ÿprs3%ÿprs4%ÿprs5%ÿ0)ÿpÿÃ
ÿ¡prg%ÿ(prs1%ÿprs2%ÿprs3%ÿprs4%ÿprs5%ÿ0)ÿp
ÿÂ"WARNING! All thresholds are currently set to zero, this","will delete all records in the file. Proceed?",148,n%
ÿ¡n%ÿ0ÿwPurgeEnts
ÿÂ"Are you sure?","",135,n%
ÿ¡n%ÿ0ÿwPurgeEnts
ÿÿ¡
ÿÊÿË"Removing current index..."
ÿ"MailBase"
ÿ³ÿ_ÿwNoIndex
ÿ£VirFeld.MailBase
ÿ¾ÿ£VirFeld.MailBase
ÿwGoOn
NoIndex:
ÿyGoOn
ÿ
GoOn:
ÿ³ÿ_ÿwErrtrap
crit$ÿ"LEFT$(PLZ.MailBase,"ÿÿH(ÿ(prs%(merl%,5),2,0))ÿ")+LEFT$(Nachname.Mailbase,"ÿÿH(ÿ(prs%(merl%,1),2,0))ÿ")+left$(Adresse1.MailBase,"ÿÿH(ÿ(prs%(merl%,2),2,0))ÿ")+left$(Firma.MailBase,"
crit$ÿcrit$ÿÿH(ÿ(prs%(merl%,3),2,0))ÿ")+left$(Stadt.MailBase,"ÿÿH(ÿ(prs%(merl%,4),2,0))ÿ")"
ÿÊÿË"Creating Index..."
ÿ¡srtn%ÿpsrtn%ÿ0:ÿ5
bModify$ÿ"Wait..."
bHelp$ÿ"Wait..."
bCancel$ÿ"Wait..."
bOK$ÿ"Wait..."
ÿÎ
ÿ®VirFeld.MailBase,"VirFeld;VTX CLC RDO;50;14;0",crit$
ÿÿ£ÿ³VirFeld.MailBase
ÿ½ ** An dieser Stelle ist der Index vorhanden und das Programm kann - nachdem einige Einstellungen
ÿ½ ** vorgenommen wurden - damit beginne, nach identischen Schlüsseln zu suchen. Dazu benutzt es den
ÿ½ ** Befehl SELECT DUPLICATE.
ÿ"MailBase"
ÿ¡automan%ÿ
3ÿp
ÿ5
ÿ^
activity$ÿ"Wait, "ÿst$ÿ" database...":ÿ1
ÿÿ¡
ÿÊÿËst$ÿ" database..."
bKeep$ÿ"Keep":bDelete$ÿ"Delete":bRplace$ÿ"Replace"
ÿ¡automan%ÿ1ÿpbKeep$ÿ"Auto Mode":bDelete$ÿ"Auto Mode":bRplace$ÿ"Auto Mode"
ÿ¡automan%ÿ2ÿpbDelete$ÿ"Searching..."
ÿÉÿ`
recproc%ÿ0
numdups%ÿ0
FD1:
ÿ½ ** Diese Routinen durchlaufen jeden Datensatz in der Datenbank und suchen nach Duplikaten.
ÿink$
ÿ¡ink$ÿÿ(27)ÿink$ÿ"C"ÿpÿÃ
a10$ÿVirFeld.MailBase
recproc%ÿrecproc%ÿ1
ÿ¡automan%ÿ
3ÿp
ÿ¡automan%ÿ2ÿpbDelete$ÿ"Searching..."
a1$ÿVorname.MailBase
a2$ÿNachname.MailBase
a3$ÿFirma.MailBase
a4$ÿAdresse1.MailBase
a5$ÿAdresse2.MailBase
a6$ÿStadt.MailBase
a7$ÿB_Land.MailBase
a8$ÿPLZ.MailBase
a9$ÿÿ(Eingabedatum.MailBase,"mm/dd/yyyy")
a11$ÿ""
ÿÿ:ÿÎ:ÿÉÿY
ÿÿ¡
FD2:
ÿ½ ** Hiermit ist der Bildschirm aufgebaut, und wir haben einen aktuellen Index.
ÿ½ ** Existieren Duplikate ?
ÿÉÿ]
ÿ¡ÿB("MailBase")ÿp
ÿÉÿ±ÿ"MailBase"
ÿ¡ÿB("MailBase")ÿpÿÃ
ÿwFD1
ÿ^
ÿ¡automan%ÿ
2ÿp
numdups%ÿnumdups%ÿ1
ÿ
a11$ÿVirFeld.MailBase
ÿÎ
bCmd%ÿ0
MF1:
ÿ½ ** Ha ! Doppelgänger erwischt ! Nachfragen, ob löschen oder behalten.
ÿÊÿË"ESC=Stop | D=Delete | K=Keep | R=Replace"
ÿÏÿ¥ÿÿß
ÿ¡bCmd%ÿ0ÿpÿa$:a$ÿÿ>(a$)
ÿ¡bCmd%ÿ3ÿa$ÿ"R"ÿpa11$ÿVirFeld.MailBase:ÿÉÿ¥a10$:ÿÉÿ¾ÿ"MailBase":ÿÉÿ¥a11$:ÿwFD1
ÿ¡bCmd%ÿ2ÿa$ÿ"D"ÿpÿÉÿ¾ÿ"MailBase":ÿÉÿ¥a10$:ÿwFD1
ÿ¡bCmd%ÿ1ÿa$ÿ"K"ÿp
ÿÉÿ±ÿ"MailBase"
ÿ¡ÿB("MailBase")ÿpÿÃ
ÿwFD1
ÿÿ¡
ÿ¡a$ÿ"C"ÿa$ÿÿ(27)ÿpÿÃ
ÿwMF1
ÿ^
ÿ¡automan%ÿ2ÿpnumdups%ÿnumdups%ÿ1:bDelete$ÿ"Deleting...":a11$ÿVirFeld.MailBase:ÿÎ
ÿÉÿ¾ÿ"MailBase"
ÿÉÿ¥a10$
ÿwFD1
ÿÿ¡
ÿÿ¡
ÿwFD1
EditEnts:
ÿ½ ** Diese Routine erlaubt das Bearbeiten, Sichten, Ändern und Löschen der Datensätze.
ÿÊÿ"Edit Mailing List"
ret%ÿ9:helpsel%ÿ3
ÿÊÿåÿ¥ÿ³
ÿ¥1,"!activity$=~~:open form ~Mailit~:GOTO H1"
ÿ¥2,"!GOTO Editit"
ÿ¥3,"!GOTO Deleteit"
ÿ¥10,"!GOTO DropFunctions"
activity$ÿ"Data Editing Form"
ÿÉÿ`
ÿ´ÿ"AddForm"
cc%ÿ1
EE1:
ÿ½ ** Wartet auf Tastatureingaben und schaltet das Tastenfeld ein, damit man Datensätze suchen kann.
a$ÿ""
ÿÊÿË"ESC=Stop | E=Edit | D=Delete | Shift+F1=Help"
ÿÏÿâÿÿ¥
ÿa$
ÿvFlushBuffer
a$ÿÿ>(a$)
ÿ¡a$ÿ"?"ÿa$ÿ"H"ÿpÿ´ÿ"Mailit":ÿwH1
ÿ¡a$ÿ"E"ÿwEditit
ÿ¡a$ÿ"D"ÿwDeleteit
ÿ¡a$ÿÿ(27)ÿa$ÿ"C"ÿa$ÿ"Q"ÿwDropFunctions
ÿwEE1
Editit:
ÿ½ ** Benutzer will diesen Datensatz bearbeiten; ist OK.
ÿÊÿË"Editing Record..."
ÿßÿ³
ÿ1,0
ÿÌÿ"MailBase"
ÿwEE1
Deleteit:
ÿ½ ** Diesen Datensatz wirklich löschen ?
ÿÊÿË"Delete Record..."
ÿÂ"Are you sure you wish to delete this record?","",135,n%
ÿ¡n%ÿpÿÉÿ¾ÿ"MailBase"
ÿÎ
ÿwEE1
DropFunctions:
ÿ½ ** Bearbeitung beenden. Funktionstastenbelegung löschen
ÿ¥2
ÿ¥3
ÿ¥10
cc%ÿ0
activity$ÿ""
ÿâÿe
ÿwMainMenu
PressanyKey:
ÿ½ ** Subroutine, um Tastendrücke entgegenzunehmen
ÿÊÿË"Press any Key to continue..."
ÿÏa$
ÿwMainMenu
PrintLabs:
ÿ½ ** Etikettendruckroutine.
ÿ½ Alle Etiketten-Dateien tragen die Endung .SBB
ÿÊÿ"Print Labels"
ÿÊÿË"Printing Labels..."
c$ÿ""
fln$ÿ"*.SBB"
ÿÂ"Select the Labels Definition","To print with:",18,n%,fln$
ÿ¡n%ÿ0ÿwMainMenu
ÿ¨ÿ¦fln$
ÿxLabData
ÿx%ÿ0ÿq3
ÿ¼a$(x%),e$(x%)
c%(x%)ÿx%ÿ1
ÿ±x%
P0:
z%ÿ1
ÿÂ"Please choose what field(s)","To sort on:",20,zz%,z%,50,c%,a$
ÿ¡zz%ÿ0ÿwMainMenu
ÿ¡z%ÿ1ÿwPL1
ÿ¡z%ÿ4ÿz%ÿ
1ÿpÿÂ"Illegal Selection,","Re-Enter!",113,n%:ÿwP0
ÿÊÿË"One Moment... Creating Index..."
activity$ÿ"One Moment,"ÿÿ(13)ÿÿ(13)ÿ"Building Index..."
ÿ1
ÿ³ÿ_ÿwP1
ÿ¾ÿ£VirFeld
ÿwP2
P1:
ÿyP2
ÿ
P2:
ÿ³ÿ_ÿwErrtrap
ÿ®VirFeld,"VirFeld ; vtx clc rdo ; 50 ; 14 ; 0 ",e$(z%ÿ1)
ÿÿ£ÿ³VirFeld
ÿ£VirFeld
PL1:
ÿ¦ÿÐÿ~
ÿÿ
ÿwMainMenu
ÿ½ ** Lab Data enthält die Daten für den Requester 20.
ÿ½ Weitere Suchkriterien können hinzugefügt werden durch Veränderung der
ÿ½ x%- und DIM-Größen, sowie durch das Anfügen eines DATA
ÿ½ Befehls am Listenende mit dem Titel
ÿ½ und dem aktuellen Ausdruck, nach dem sortiert werden soll.
LabData:
ÿ"Don't Sort.",""
ÿ"Sort by LastName.","Nachname"
ÿ"Sort by Zip Code.","PLZ"
ÿ"Sort by Zip Code and LastName.","pad$(PLZ,10)+Nachname"
Utilities:
ÿ½ ** Das Hilfsmittel Menü.
ÿÊÿ"Mailing List Utilities"
ÿ9
ÿÊÿË"Select Utility..."
ÿ¥1,"!goto H1"
helpsel%ÿ5:ret%ÿ9
U1:
ÿ½ ** Überwache Tastendrücke, etc.
a$ÿ"":utilsel%ÿ0
ÿÏÿ¥ÿÿß
ÿa$:a$ÿÿ>(a$)
ÿvFlushBuffer
ÿÉÿæa$
ÿæ"S"
ÿwConvertit
ÿæ"E"
ÿwExportit
ÿæ"B"
ÿwBackitup
ÿæ"H","?"
ÿwH1
ÿæ"R"
ÿwRestorebase
ÿæ"Q",ÿ(27)
ÿwMainMenu
ÿæÿ^
ÿ³utilsel%ÿwConvertit,Exportit,Backitup,Restorebase,MainMenu,H1
ÿÿÉ
ÿwU1
Exportit:
ÿ½ ** Gestattet dem Benutzer, eine ASCII-Datei mit vordefinierten Trennzeichen zu exportieren
ÿÊÿ"Exporting Mail Base"
activity$ÿ""
ÿ1
ÿÊÿË"Exportiing..."
ÿÂ"Name of Export File?","",4,n%,fln$,50
ÿ¡n%ÿ0ÿwUtilities
activity$ÿ"Exporting Mail Base to File '"ÿfln$ÿ"'..."
ÿÎ
ÿ"MailBase"
ÿÿqfln$ÿÐÿ~ÿsÿ(ÿ0(f1$))ÿÿ(ÿ0(f2$)),ÿ(ÿ0(r1$))ÿÿ(ÿ0(r2$)),"0"
ÿwUtilities
Backitup:
ÿ½ ** Sicherheitskopie mit neuem Namen anlegen aus der aktuellen MAILBASE-Datei.
ÿ½ **
ÿÊÿ"Back Up Mail Base"
activity$ÿ""
ÿ1
ÿÊÿË"Select File Name.."
ÿÂ"Backup Database","to Which File?",11,n%,fln$
ÿ¡n%ÿ0ÿwUtilities
ÿ¡ÿJ(fln$)ÿpÿ´ÿÿ+(fln$,ÿ/(fln$)ÿ4):ÿ¾ÿÿ+(fln$,ÿ/(fln$)ÿ4)
activity$ÿ"Backing up Mail Base to the new Superbase file '"ÿfln$ÿ"'..."
ÿÊÿË"Backing up your mail base ..."
ÿÎ
ÿ"MailBase"
ÿÉÿtÿqÿfln$
ÿwUtilities
Restorebase:
ÿ½ ** Restauriere Datenbasis.
ÿÊÿ"Restore Mail Base"
ÿÊÿË"File to Restore from..."
activity$ÿ""
ÿ1
ÿÂ"Restore from","Which File?",11,n%,fln$
ÿ¡n%ÿ0ÿwUtilities
ÿ¡ÿJ(fln$ÿ".sbf")ÿ0ÿpÿÂ"Cannot find database "ÿfln$,"",113,n%:ÿwUtilities
ÿÂ"Proceeding with this action will overwrite","all data in the present database. Continue?",148,n%
ÿ¡n%ÿ0ÿwUtilities
ÿxFieldNameData
z1%ÿ0
ÿ½ ** Wenn Kompatibilität sichergestellt ist, aktuelle Datenbasis löschen, neue erstellen
ÿ½ ** und das Feld Nachname indizieren.
ÿ´fln$ÿ".sbd"ÿÿ¤
Rb1:
ÿ¼b$
ÿ¤ÿca$
ÿ¡ÿ-(a$,1)ÿ">"ÿpz1%ÿ9
a$ÿÿF(ÿ+(a$,15))
ÿ¡ÿ>(a$)ÿÿ>(b$)ÿwGetoutofHere
ÿ¡z1%ÿpz1%ÿ0:ÿ¤ÿca$
ÿ¡b$ÿ"Versch2"ÿwYeppers
ÿwRb1
GetoutofHere:
ÿÿ¤
ÿÂ"This file is not in the Mail Base","format. Re-configure and try again.",113,n%
ÿwUtilities
Yeppers:
ÿ½ ** Korrektes Format, also alte Datei mit neuen Daten überschreiben.
ÿÿ¤
activity$ÿ"Restoring database..."
ÿÊÿË"Restoring database..."
ÿ1
cc%ÿ1
ÿ¾ÿaÿ"MailBase"
ÿ¢fln$ÿ".sbf"ÿqÿ"MailBase"
cc%ÿ0
ÿwUtilities
BegStand:
activity$ÿ""
ÿ1
ÿ´ÿ"RuleBase"
ÿwCI1
Convertit:
ÿ½ ** Dies ist die famose Standardisierungsroutine.
activity$ÿ""
ÿ9
ÿÊÿË"Are you sure?"
ÿÊÿ"Standardize Mail Database"
ÿpth$
ÿ´ÿ"RuleBase"
ÿÂ"This process can take a considerable time for "ÿÿH(ÿ(ÿA("MailBase"),5,0))ÿ" records,","do you wish to continue?",148,n%
ÿ¡n%ÿ0ÿwUtilities
CI1:
ÿÊÿË"Standardizing Mail Base..."
activity$ÿ"Processing Rule Base..."
ÿ1
ctx%ÿ1
ÿÍRegel_nr.RuleBaseÿctx%:ctx%ÿctx%ÿ1
ctx%ÿ1
ÿÍRecNum.MailBaseÿctx%:ctx%ÿctx%ÿ1
ÿ£Regel_nr.RuleBase
ÿ10
rctotal%ÿÿA("MailBase")
rcleft%ÿÿA("MailBase")
rcnum%ÿ0
totrul%ÿÿA("RuleBase")
onrul%ÿ0
ÿvUpdateScreen
ÿ"MailBase"
ÿ£recnum.mailbase
ÿÉÿ`ÿ"MailBase"
ÿÉÿ`ÿ"RuleBase"
C1:
ÿ½ ** Mit der Routine C1 bildet das Programm die Zeichenkette zz$, die das enthält, wonach
ÿ½ ** gerade gesucht wird. Wenn die Variable nsp% auf 0 gesetzt ist, wird eine Leerstelle
ÿ½ ** am Ende nicht beachtet. Ist ihr Wert 1, wird sie beachtet.
ÿ½ ** Die Variable wh% hat den Wert 1, falls zz$ irgendwo im Feld stehen darf,
ÿ½ ** 2 wenn zz$ nur am Ende und 3 wenn zz$ nur am Anfang stehen darf.
ÿk$
ÿ¡k$ÿÿ(27)ÿpÿÉÿÐ:ÿÉÿ`:ÿwEndStand
ÿ¡ÿB("RuleBase")ÿwCend
onrul%ÿonrul%ÿ1
rcnum%ÿ0
rcleft%ÿÿA("MailBase")
ÿvUpdateScreen
nsp%ÿ0:wh%ÿ1
z$ÿLookFor
ÿ¡ÿ+(z$,1)ÿ"*"ÿpz$ÿÿ,(z$,2):wh%ÿ2
ÿ¡ÿ+(z$,1)ÿ"^"ÿpz$ÿÿ,(z$,2):wh%ÿ3
zz$ÿ""
ÿx%ÿ1ÿqÿ/(z$)
ÿ¡ÿ,(z$,x%,1)ÿ"!"ÿp
zz$ÿzz$ÿ""
ÿ^ÿ¡ÿ,(z$,x%,1)ÿ"@"ÿp
zz$ÿzz$ÿ" "
ÿ^
zz$ÿzz$ÿÿ,(z$,x%,1)
ÿÿ¡
ÿ±x%
ÿ¡ÿ?(z$,"!")ÿpnsp%ÿ1
ex$ÿ"select where "ÿFeldname.RuleBaseÿ" like "ÿÿ(34)ÿ"*"ÿÿH(ÿF(zz$))ÿ"*"ÿÿ(34)
ÿex$
ex$ÿ""
ÿÉÿ`ÿ"Mailbase"
C20:
ÿ½ ** a$ wird auf den zu suchenden Feldinhalt gesetzt und fügen zum Suchen noch ein 'Space' an.
ex$ÿ"a$="ÿFeldname.RuleBase
ÿex$
ex$ÿ""
a$ÿa$ÿ" "
ÿ¡ÿB("MailBase")ÿpÿÉÿ±ÿ"RuleBase":ÿwC1
rcnum%ÿRecnum.mailBase
rcleft%ÿrctotal%ÿrcnum%
ÿvUpdateScreen
CRemake:
ÿ½ ** Ist zz$ in a$ enthalten ? Falls ja, eventuell Übereinstimmung.
zz%ÿÿ?(ÿ>(a$),ÿ>(zz$))
ÿ¡zz%ÿ0ÿpÿÉÿ±ÿ"MailBase":ÿwC20
ÿ¡nsp%ÿ1ÿÿ,(a$,zz%ÿÿ/(zz$),1)ÿ" "ÿpÿÉÿ±ÿ"MailBase":ÿwC20
ÿ¡zz%ÿ1ÿwh%ÿ3ÿpÿÉÿ±ÿ"MailBase":ÿwC20
ÿ¡wh%ÿ2ÿp
ÿ¡zz%ÿÿ/(zz$)ÿ4ÿ
ÿ/(a$)ÿp
ÿÉÿ±ÿ"MailBase":ÿwC20
ÿÿ¡
ÿÿ¡
ÿ¡zz%ÿ
2ÿpff$ÿ""ÿ^ff$ÿÿ+(a$,zz%ÿ1)
af$ÿÿ,(a$,zz%ÿÿ/(zz$))
Ct$ÿChangeTo
pw%ÿ1
ÿ¡ÿ+(Ct$,1)ÿ"*"ÿppw%ÿ2:Ct$ÿÿ,(Ct$,2)
ÿ¡ÿ+(Ct$,1)ÿ"^"ÿppw%ÿ3:Ct$ÿÿ,(Ct$,2)
ch$ÿ""
ÿx%ÿ1ÿqÿ/(Ct$)
ÿ¡ÿ,(Ct$,x%,1)ÿ"@"ÿpch$ÿch$ÿ" "ÿ^ch$ÿch$ÿÿ,(Ct$,x%,1)
ÿ±x%
ÿ¡ÿ>(ÿ,(a$,zz%,ÿ/(ch$)))ÿÿ>(ch$)ÿpÿÉÿ±ÿ"MailBase":ÿwC20
ÿ¡ÿ?(Ct$,"~")ÿpch$ÿ" "
ÿ¡pw%ÿ1ÿpa$ÿff$ÿch$ÿaf$
ÿ¡pw%ÿ2ÿpa$ÿff$ÿaf$ÿch$
ÿ¡pw%ÿ3ÿpa$ÿch$ÿff$ÿaf$
ex$ÿFeldname.RuleBaseÿ"=a$"
a$ÿÿH(ÿF(a$))
ÿex$
ex$ÿ""
ÿ"MailBase"
ÿÌ,1
ÿÉÿ±ÿ"MailBase"
ÿwC20
Cend:
ÿ½ ** Fertig ! Und ab dafür...
ÿ"MailBase"
ÿÌ,2
ÿÿt
activity$ÿ"Standardization Complete."ÿÿ(13)
ÿ¡srtn%ÿpactivity$ÿactivity$ÿ"Now Processing Merge File..."ÿÿ(13)
ÿ´ÿ"Mailit"
ÿÏÿ2
EndStand:
ÿ¡srtn%ÿpÿÃ
ÿwUtilities
UpdateScreen:
ÿ½ ** Aktualisiert den Bildschirm, damit der Benutzer auch sieht, warum das solange dauert.
onrul$ÿÿH(ÿ(onrul%,5,0))ÿ" of "ÿÿH(ÿ(totrul%,5,0))ÿ"."
rcleft$ÿÿH(ÿ(rcleft%,6,0))
rcnum$ÿÿH(ÿ(rcnum%,6,0))
ÿ¡rcnum%ÿ0ÿprcnum$ÿ"Searching..."
ÿÎ
ÿÃ
SetOpts:
ÿ½ ** Der Abschnitt richtet den Bildschirm und die Routinen ein, die die Eingaben des
ÿ½ ** Anwenders bearbeiten:
ÿÊÿ"Set Mail options"
bCancel$ÿ"Cancel"
ÿ7
ÿÊÿË"ESC=Stop | M=Modify Rules | C=Change Separators"
ÿ¬1,0,0," "
SO1:
optsel%ÿ0:a$ÿ""
ÿÏÿ¥ÿÿß
ÿ¡optsel%ÿ0ÿpÿa$:a$ÿÿ>(a$):ÿvFlushBuffer
ÿ¡a$ÿ"M"ÿoptsel%ÿ1ÿwOptsRule
ÿ¡a$ÿ"C"ÿoptsel%ÿ2ÿwOptsSep
ÿ¡a$ÿÿ(27)ÿa$ÿ"Q"ÿoptsel%ÿ4ÿwMainMenu
ÿ¡a$ÿ"H"ÿoptsel%ÿ5ÿphelpsel%ÿ7:ret%ÿ9:ÿwH1
ÿwSO1
OptsRule:
ÿ½ OK, hier ändern wir Regeln oder fügen neue hinzu.
ÿ½ Die Regeln lauten: BEIM SUCHEN
ÿ½ * - Dieses Zeichen am Feldende suchen
ÿ½ ^ - Dieses Zeichen am Feldanfang suchen
ÿ½ @ - Identisch mit Leerzeichen
ÿ½ ! - Feld darf nicht auf Leerzeichen enden
ÿ½ BEIM ERSETZEN:
ÿ½ * - Resultierende Zeichenkette ans Ende des Feldes
ÿ½ ^ - Resultierende Zeichenkette an den Anfang des Feldes
ÿ½ @ - Nur ein Leerzeichen
ÿ½ ~ - Komplett löschen, durch nichts ersetzen
ÿÊÿ"Modify Rule Base"
ÿÊÿË"Select field to modify..."
ÿ"MailBase"
ÿÂ"Select Field","",9,n%,flnm$
ÿ´ÿ"RuleBase"
ÿ¡n%ÿ0ÿwSetOpts
ctx%ÿ1
flnm$ÿÿF(ÿ+(flnm$,15))
ÿÍRegel_nr.RuleBaseÿctx%:ctx%ÿctx%ÿ1ÿÐFeldname.RuleBaseÿflnm$
ÿ"RuleBase"
ex$ÿ"select where FeldName.RuleBase LIKE "ÿÿ(34)ÿflnm$ÿÿ(34)
ÿex$
ex$ÿ""
mdf$ÿ"Modifying the "ÿflnm$ÿ" field"
ÿ´ÿ"optsel2"
cc%ÿ1
ÿÉÿ`
Op:
ÿ½ ** Hier kann man Eingaben in die RULEBASE vornehmen, löschen, bearbeiten usw.
ÿÊÿË"ESC=Stop | N=New | D=Delete | E=Edit | M=Modify Other"
a$ÿ""
ÿÏÿâÿÿ¥
ÿÊÿË"ESC=Stop | N=New | D=Delete | E=Edit | M=Modify Other"
ÿa$
ÿvFlushBuffer
a$ÿÿ>(a$)
ÿ¡a$ÿ"N"ÿwOp1
ÿ¡a$ÿ"M"ÿpÿÿ:ÿwOptsRule
ÿ¡a$ÿ"D"ÿwOp2
ÿ¡a$ÿ"E"ÿwOp3
ÿ¡a$ÿÿ(27)ÿa$ÿ"C"ÿpcc%ÿ0:ÿâÿe:ÿÉÿÐ:ÿwMainMenu
ÿwOp
Op1:
ÿ½ ** Regel hinzufügen
n$ÿ"":ct$ÿ""
ÿÂ"Enter Value to Look for in Field "ÿflnm$ÿ"?","",4,n%,n$,15
ÿ¡n%ÿ0ÿwOp
ÿÿ"RuleBase"
FeldName.RuleBaseÿflnm$
Suche_nach.RuleBaseÿn$
ÿÂ"Change "ÿn$ÿ" in ?","",4,n%,ct$,40
ÿ¡n%ÿ0ÿwOp
Aendern_in.RuleBaseÿct$
Regel_nr.RuleBaseÿctx%
ctx%ÿctx%ÿ1
ÿÌÿ"RuleBase"
ÿwOp
Op2:
ÿ½ ** Regel löschen
ÿÂ"Delete the Change "ÿSuche_nach ÿ" to",Aendern_in ÿ" record?",135,n%
ÿ¡n%ÿ0ÿwOp
ÿÉÿ¾ÿ"RuleBase"
ÿ1
ÿwOp
Op3:
ÿ½ ** Ändere Regel
ÿÂ"Change the "ÿSuche_nach ÿ" to "ÿAendern_in,"Record?",135,n%
ÿ¡n%ÿ0ÿwOp
n$ÿSuche_nach.RuleBase
ÿÂ"Alter Look For to ","",4,n%,n$,15
ÿ¡n%ÿ0ÿwOp
Suche_nach ÿn$
n$ÿAendern_in
ÿÂ"Alter Change To Field to ","",4,n%,n$,40
ÿ¡n%ÿ0ÿwOp
Aendern_in ÿn$
ÿÌÿ"RuleBase"
ÿÎ
ÿwOp
OptsSep:
ÿ½ ** Feld- und Datensatztrennzeichen können auch geändert werden
bCancel$ÿ"Cancel"
fo1$ÿf1$:fo2$ÿf2$:ro1$ÿr1$:ro2$ÿr2$
ÿÊÿ"Change Export Separators"
ÿ8
ÿÊÿË"ESC=Stop | F=Fields | R=Records"
OS1:
ÿ½ ** Menü Bearbeitung
optsel%ÿ0:a$ÿ""
ÿÏÿ¥ÿÿß
ÿ¡optsel%ÿ0ÿpÿa$:a$ÿÿ>(a$):ÿvFlushBuffer
ÿ¡a$ÿÿ(27)ÿa$ÿ"C"ÿoptsel%ÿ99ÿpf1$ÿfo1$:f2$ÿfo2$:r1$ÿro1$:r2$ÿro2$:ÿwMainMenu
ÿ¡a$ÿ"U"ÿoptsel%ÿÿ999ÿwMainMenu
ÿ¡a$ÿ"F"ÿpÿ6,2:ÿwCheckup
ÿ¡a$ÿ"R"ÿpÿ8,2:ÿwCheckup
ÿwOS1
Checkup:
ÿ½ ** Gültiges ASCII-Feldtrennzeichen eingegeben vom Anwender ?
ÿ¡ÿ0(f1$)ÿ0ÿÿ.(f1$)ÿ48ÿpf1$ÿfo1$
ÿ¡ÿ0(f2$)ÿ0ÿÿ.(f2$)ÿ48ÿpf2$ÿfo2$
ÿ¡ÿ0(r1$)ÿ0ÿÿ.(r1$)ÿ48ÿpr1$ÿro1$
ÿ¡ÿ0(r2$)ÿ0ÿÿ.(r2$)ÿ48ÿpr2$ÿro2$
ÿ¡ÿ0(f1$)ÿ
0ÿÿ0(f1$)ÿ255ÿpf1$ÿfo1$
ÿ¡ÿ0(f2$)ÿ
0ÿÿ0(f2$)ÿ255ÿpf2$ÿfo2$
ÿ¡ÿ0(r1$)ÿ
0ÿÿ0(r1$)ÿ255ÿpr1$ÿro1$
ÿ¡ÿ0(r2$)ÿ
0ÿÿ0(r2$)ÿ255ÿpr2$ÿro2$
ÿÎ
ÿwOS1
Helpme:
ÿ½ ** Der Haupteingang zur Hilfe-Sektion
ÿÊÿ"MailBase Help"
ret%ÿ0:helpsel%ÿ0
HON:
ÿ½ ** Alle Hilferufe der Hilfsmittel kommen hier an
ÿ3
ÿÊÿË"Select Help Topic"
ÿ¬ÿe
ÿ¡ret%ÿwH1
HNK:
ÿ½ ** Hilfe-Hauptmenü
ÿÏÿ¥ÿÿß
ÿa$:hl%ÿÿ?("AMELUPOQS",ÿ>(a$))
ÿvFlushBuffer
ÿ¡a$ÿÿ(27)ÿhl%ÿ8ÿhelpsel%ÿ8ÿwEndHelp
ÿ¡helpsel%ÿhl%ÿ0ÿwHNK
ÿ¡helpsel%ÿ0ÿphelpsel%ÿhl%
H1:
ÿ½ ** Eigentliche Hilfe, gibt richtigen Bildschirm aus
ÿ´ÿ"HelpBase"
hl$ÿ"<Esc> - Quit back to Main | Any other key for more Help."
ÿ¡ret%ÿphl$ÿ"<Esc> - Quit back to Start | Any other key for more Help."
ÿÊÿËhl$
ÿÉÿÐTopic ÿhelpsel%
ÿÉÿ`
ÿ4
ÿ¡zr%ÿ0ÿret%ÿpzr%ÿhelpsel%
ÿÏÿ¥ÿÿß
ÿa$
ÿvFlushBuffer
ÿ¡a$ÿÿ(27)ÿÿ>(a$)ÿ"Q"ÿwEndHelp
ÿwHelpme
EndHelp:
ÿ½ ** Zurück zu richtigem Abschnitt
ÿ³zr%ÿwAddEnts,MergeEnts,EditEnts,PrintLabs,Utilities,PurgeEnts,SetOpts
ÿwMainMenu
Quitit:
ÿ½ ** Abschlußroutine
ÿÂ"Confirm Exit...","",148,n%
ÿ¡n%ÿ0ÿwMainMenu
ÿ´"MDefault"ÿÿ¶
ÿ{ÿ«
ÿÿ¶
ÿÿt
ÿÊÿ""
ÿâÿ³
ÿ¬ÿ
ÿ
FieldNameData:
ÿ½ Diese Daten stellen sicher, daß die Datenbank dasselbe Format hat wie die MAILBASE-Datei
ÿ"RecNum","VirFeld","Titel","Vorname","Nachname","Firma","Adresse1","Adresse2","Stadt","B_Land","PLZ","Land","Tel_Privat","Tel_Geschaeft","FAX","Anmerkungen","Eingabedatum","Versch1","Versch2"
FlushBuffer:
ÿ½ Alle zusätzlichen Zeichen loswerden
ÿzz1$
ÿ¡zz1$ÿ""ÿpÿÃ
ÿwFlushBuffer
Errtrap:
ÿ½ Ein Fehler ist aufgetreten. Der Fehler steht in ERRNO, der Fehlername läßt sich mit ERR$()
ÿ½ erfragen. Fehler 11 ist CTRL+C oder Stoptaste.
ÿ½ Zum Aufheben der Fehlerbedingung und zur Fortführung der normalen Programmausführung muß
ÿ½ RESUME aufgerufen werden.
ÿ½ ** cc%=0 --- Fehler in Programm - unerwartet.
ÿ½ ** cc%=1 --- Erwarteter Fehler - zurück zu nächster Anweisung (in derselben Routine) - ich verwende
ÿ½ diesen Fehler als Dateiende-Fehler (EOF), der bei der Benutzung von WAITPANEl auftritt.
ÿ¡ÿ&ÿ10ÿcc%ÿ1ÿpÿÊÿË"*** End of File ***":ÿ:ÿÏÿ.5:ÿyÿ±
ÿ¡cc%ÿ1ÿÿ&ÿ11ÿpcc%ÿ0:ÿpth$:ÿyMainMenu
ÿ¡ÿ&ÿ11ÿpÿpth$:ÿyMainMenu
ÿ¡cc%ÿ1ÿpÿyÿ±
ÿÊÿË"****"ÿÿ((ÿ&)ÿ"****"
ÿÏÿ2.0
ÿpth$
ÿyMainMenu